<!--
  之前的总结:
      1.在js中,除了基本数据类型的数据,万物皆对象
      2.所有的对象都是Object的实例对象
      3.所有的函数都是Function的实例对象(包括Function自己->Function自己创建了自己???)
      4.函数是一等公民,它既是函数,又是对象

      注意:在js中,有能力创建函数的只有Function
  语法糖:
      {} -> new Object()
      [] -> new Array()
      function -> new Function()

  在JS中,使用C语言创建的3个东西
      1.Object
      2.Function
      3.Function.prototype
 -->

<!--
   有问题的四根线
      说明:这四条线都是作者为了完善实现javascript,特地添加的线
      1.Function.__proto__ === Function.prototype
          如果没有这条线,Function将无法访问所有函数都能使用的方法(例如:call,apply,bind等)

          伪数组的定义:
              1.使用数字作为属性名(下标)
              2.具有length属性
              3.不能使用数组的方法

      2.Object.__proto__ === Function.prototype
          同1,如果没有这条线,那么Object将不算是一个真正的函数,无法使用函数的所有方法

      3.Function.prototype.__proto__ === Object.prototype
          如果没有这条线,那么js中所有的函数都将不再是对象,无法使用到对象公共的方法

      4.Object.prototype.__proto__ === null
          如果没有这条线,那么对象查找一个原型链上不存在的属性时,会在Object的原型对象身上死循环,导致代码崩溃
  -->
